As computers have become more sophisticated, it has become possible to run two or more programs, or application processes, concurrently on a single computer system. This capability, known as multitasking, or multi-programming, has been made possible by the development of large, very fast, processors that can switch between programs either at selected intervals, or when some event happens in the system, such as data transfer to or from a mass storage device, which does not require processor time. More recently, networks of smaller computers have permitted slower computers to be linked together to allow the sharing of programs and data to achieve concurrent processing.
Since computer systems can run multiple application processes concurrently, their users now find it desirable to be able to frequently switch between two or more processes that are running on the system. For instance, personnel in a manufacturing facility may want to selectively monitor and control different manufacturing steps that may be controlled by the system. Personnel in a financial office may want to access to records of the most recent transactions, records of past transactions, and also to send and receive electronic mail. Typically, a user's access to a computer system is through a single component or virtual terminal that comprises a video display-keyboard combination, such as a word processing station, or a personal computer connected to the primary system.
Another advantage of a computer system's ability to run a number of application processes concurrently is that it has become possible to connect a component to the system which may have selective access to all of the processes running on the system. For instance, it may be desirable to connect to the system an intelligent printer which can select the order of printing among a number of print requests presented to it. Alternatively, a master processor may be connected to the system to monitor the processes running on a number of slave processors so as to control all the processes running on the system.
The processor units, terminals and other components of many computer systems are often connected together by a single communications link. Typically, these components are connected to each other by a common bus. Connecting components in this manner minimizes the number of input/output ports that each component has to be provided with, and also reduces the number of communications links needed to connect all the components together.
Frequently there is a need to provide the virtual terminals that are part of a computer system with a means to rapidly access the programs running on the system. This access function, or switching capablity enables the virtual terminal's user to selectively monitor the processes and specifically receive processed data therefrom, and to transmit inforamtion in the form of data to be processed, or commands for processing the data to the process being monitored. Typically, a switching protocol is provided so information may be selectively transmitted or received from the different processes running on the system over the single communications link to and from the terminal device.
Currently, many computer systems use a packet-switching protocol wherein packets of information are sent to and from the terminal and other components that are part of the computer system. Each packet comprises a header field followed by an information field. The header field contains control information such as address information which identifies the intended recipient of information contained in the information field. For example, a user may have a virtual terminal set to observe, or "window" two programs operating on a system. Header fields in packets, transmitted from the system to the virtual terminal insure the displayed window contains data from the program being monitored in that window. In transmissions from the virtual terminal, the header fields identify the application processes to which the information is directed, and if necessary, the processor on which the process is running. Packet switching, thus, makes it possible to transmit information regarding multiple application processes over a single communications link.
However, there are limitations associated with packet switching. In each packet the information field must be preceded by a header field, and so the time required to transmit the header fields reduces the amunt of time during which information, whether data or program commands may be transmitted over the communications link. Moreover, the virtual terminals and the other system components must spend time generating header fields for transmitted packets, decoding header fields of received packets, and directing directing the flow of the information in the packets to the intended recipient.